import { Login_Status, Sdk_Platform } from "./constants"
module.exports = {
    // 微信小游戏更新
    updateManager() {
        switch (common.sdk_env) {
            case Sdk_Platform.WECHAT:
                const updateManager = wx.getUpdateManager()
                updateManager.onCheckForUpdate(function (res) {
                    // 请求完新版本信息的回调
                    if (res.hasUpdate) {
                        gg.eventManager.emit("login", Login_Status.CHECK_UPDATE)
                    } else {
                        he.db.init()
                    }
                })
                updateManager.onUpdateReady(function () {
                    wx.showModal({
                        title: '更新提示',
                        content: '新版本已经准备好，是否重启应用？',
                        success: function (res) {
                            if (res.confirm) {
                                // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                                updateManager.applyUpdate()
                            } else {
                                gg.eventManager.emit("login", Login_Status.UPDATE_FAIL)
                            }
                        }
                    })
                })
                updateManager.onUpdateFailed(function () {
                    gg.eventManager.emit("login", Login_Status.UPDATE_FAIL)
                })
                break
            case Sdk_Platform.VIVO:
                qg.onUpdateReady(function (res) {
                    if (res == 1) {
                        qg.applyUpdate();
                    }
                });
                he.db.init()
                break
            case Sdk_Platform.OPPO:
            default:
                he.db.init()
                break
        }
    },
    // 登录流程更改
    // 直接向服务端获取数据 =》 服务端检测openid =》 检测存档是否存在 =》 覆盖本地存档
    login() {
        let uid = he.local.get('uid', 'user')
        if (!uid) {
            uid = 0
        }
        switch (common.sdk_env) {
            case Sdk_Platform.F_4399:
                cloud.callFunction({
                    name: 'login',
                    data: { uid: uid, platform: common.sdk_env }
                }).then(res => {
                    if (res.result) {
                        he.local.setJson('user', res.result)
                        he.local.set('local_dida', res.result.last_time_stamp - new Date())
                        gg.eventManager.emit('login', Login_Status.LOGIN_SUCCESS)
                    } else {
                        gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                    }
                }).catch(err => {
                    he.error(err)
                    gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                })
                break
            case Sdk_Platform.WECHAT:
                wx.login({
                    success(res) {
                        if (res.code) {
                            cloud.callFunction({
                                name: 'login',
                                success: res => {
                                    if (res.result) {
                                        // 设置用户数据
                                        he.local.setJson('user', res.result)
                                        he.local.set('local_dida', res.result.last_time_stamp - new Date())
                                        gg.eventManager.emit('login', Login_Status.LOGIN_SUCCESS)
                                    } else {
                                        gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                                    }
                                },
                                fail: err => {
                                    gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                                },
                                data: { uid: uid }
                            })
                        } else {
                            gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                        }
                    },
                    fail: (error => {
                        gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                    })
                })
                break
            case Sdk_Platform.OPPO:
                cloud.callFunction({
                    name: 'login',
                    data: { uid: uid, platform: common.sdk_env }
                }).then(res => {
                    if (res.result) {
                        he.local.setJson('user', res.result)
                        he.local.set('local_dida', res.result.last_time_stamp - new Date())
                        gg.eventManager.emit('login', Login_Status.LOGIN_SUCCESS)
                    } else {
                        gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                    }
                }).catch(err => {
                    he.error(err)
                    gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                })
                break
            case Sdk_Platform.VIVO:
                cloud.callFunction({
                    name: 'login',
                    data: { uid: uid, platform: common.sdk_env }
                }).then(res => {
                    //临时使用测试
                    he.local.click('login_first')
                    if (res.result) {
                        he.local.setJson('user', res.result)
                        he.local.set('local_dida', res.result.last_time_stamp - new Date())
                        gg.eventManager.emit('login', Login_Status.LOGIN_SUCCESS)
                    } else {
                        gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                    }
                }).catch(err => {
                    console.log(err)
                    he.error(err)
                    gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                })

                break
            case Sdk_Platform.UC:
                console.log(cloud)
                cloud.callFunction({
                    name: 'login',
                    data: { uid: uid, platform: common.sdk_env }
                }).then(res => {
                    //临时使用测试
                    he.local.click('login_first')
                    console.log('heddlopfdsaf1111111111111111111111111111')
                    if (res.result) {
                        he.local.setJson('user', res.result)
                        he.local.set('local_dida', res.result.last_time_stamp - new Date())
                        gg.eventManager.emit('login', Login_Status.LOGIN_SUCCESS)
                    } else {
                        gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                        console.log('shibai 11111111111111')
                    }
                }).catch(err => {
                    console.log(err)
                    he.error(err)
                    console.log('shibai 2222222222')
                    // gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                    this.checkLocalInit()
                    gg.eventManager.emit('login', Login_Status.LOGIN_SUCCESS)
                })
                break

            case Sdk_Platform.HUAWEI:
                if (common.isTest) {
                } else {
                    cloud.callFunction({
                        name: 'login',
                        data: { uid: uid, platform: common.sdk_env }
                    }).then(res => {
                        if (res.result) {
                            he.local.setJson('user', res.result)
                            he.local.set('local_dida', res.result.last_time_stamp - new Date())
                            gg.eventManager.emit('login', Login_Status.LOGIN_SUCCESS)
                        } else {
                            gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                        }
                    }).catch(err => {
                        console.log(err)
                        he.error(err)
                        gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                    })
                }
                break
            case Sdk_Platform.DEBUG:
                // 本地环境
                he.log("测试环境中")
                this.checkLocalInit()
                gg.eventManager.emit('login', Login_Status.LOGIN_SUCCESS)
                //云服务
                // cloud.callFunction({
                //     name: 'login',
                //     data: { uid: uid, platform: common.sdk_env }
                // }).then(res => {
                //     //临时使用测试
                //     he.local.click('login_first')
                //     if (res.result) {
                //         he.local.setJson('user', res.result)
                //         he.local.set('local_dida', res.result.last_time_stamp - new Date())
                //         gg.eventManager.emit('login', Login_Status.LOGIN_SUCCESS)
                //     } else {
                //         gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                //         console.log('shibai 11111111111111')
                //     }
                // }).catch(err => {
                //     console.log(err)
                //     he.error(err)
                //     console.log('shibai 2222222222')
                //     gg.eventManager.emit('login', Login_Status.LOGIN_FAIL)
                // })
                break
        }
    },
    // 本地初始化
    checkLocalInit() {
        // cc.sys.localStorage.clear()
        let oldUser = he.local.get('old', 'user')
        if (!oldUser) {
            let userInfo = {}
            // 角色队伍
            userInfo.old = true
            userInfo.old = true
            userInfo.coin = 4000
            userInfo.diamond = 0
            userInfo.bagNum = 20
            userInfo.bag = [
                { id: 11001, num: 50 },
                { id: 11006, num: 50 },
                { id: 11007, num: 50 },
                { id: 20002, num: 250 },
            ]
            // userInfo.guideList = [1, 1, 1, 1, 1, 1, 1]
            userInfo.team = [
                {
                    id: 1001,               // 角色编号
                    order: 1,              // 站位排序
                    equips: [1, 0, 0, 0],     // 装备等级
                    hand: 0                 // 选择装备
                },
            ]
            userInfo.pass_list = [
            ]
            // 角色技能卡片背包
            userInfo.card = [
                { id: 3001, lv: 1 },
            ]
            // 卡片队伍
            userInfo.card_team = [
            ]
            he.local.setJson('user', userInfo)
        }

    },
    // 储存游戏数据 在onhide处使用
    saveInfo() {
        let user = he.local.getJson('user')
        switch (common.sdk_env) {
            case Sdk_Platform.F_4399:
                break
            case Sdk_Platform.OPPO:

                break
            case Sdk_Platform.VIVO:
                cloud.callFunction({
                    name: 'save',
                    data: user
                }).then(res => {
                    //测试使用 记得删除
                    he.local.click('save_first')
                    he.log(res)
                }).catch(err => {
                    he.error(err)
                })
                break
            case Sdk_Platform.WECHAT:
                if (window.wx) {
                    cloud.callFunction({
                        name: 'save',
                        success: res => {
                            console.log("请求云函数成功", res)
                        },
                        fail: res => {
                        },
                        data: user
                    })
                }
                break
            case Sdk_Platform.HUAWEI:
                cloud.callFunction({
                    name: 'save',
                    data: user
                }).then(res => {
                    //测试使用 记得删除
                    he.local.click('save_first')
                    he.log(res)
                }).catch(err => {
                    he.error(err)
                })
                break
            case Sdk_Platform.DEBUG:
                he.log("你切换了页面，但我并没有保存数据")
                break
        }
    },
}